Automatic integrated circuit routing using spines

ABSTRACT

A method and technique of routing interconnects of an integrated circuit providing improved routing quality. In an embodiment of the invention, the technique provides linear spine interconnect routing. In memory array blocks, such as in DRAM and SRAM memory designs, connected pins are generally separated by large distances in a first direction and small distances in a second direction, or a spine or channel region. A route area is defined within the spine region. In one embodiment, obstacles in the route area are identified and corresponding forbidden areas are demarcated. The linear spine interconnect is routed in the first direction within the route area while avoiding the forbidden areas. Pins are connected to the spine interconnect by stitching interconnects. Stitching interconnects are generally routed in the second direction.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.10/908,895, filed May 31, 2005 (now U.S. Pat. No. 7,257,797, issued Aug.14, 2007), which claims the benefit of U.S. provisional patentapplication 60/577,850, filed Jun. 7, 2004, and U.S. patent applicationSer. No. 11/530,613, filed Sep. 11, 2006, which are incorporated byreference along with all other references cited in this application.

BACKGROUND OF THE INVENTION

The present invention relates to the field of electronic designautomation (EDA) or computer aided design (CAD) software and, moreparticularly, to techniques for placing devices and routinginterconnects in integrated circuits.

Integrated circuit technology is a marvel of the modem age. Integratedcircuits are also sometimes referred to as “chips.” Integrated circuitsare used in many applications such as computers, consumer electronics,networking, and telecommunications. There are many types of integratedcircuits including microprocessors, microcontrollers, applicationspecific integrated circuits (ASICs), gate arrays, programmable logicdevices (PLDs), field programmable gate arrays (FPGAs), dynamic randomaccess memories (DRAMs), static random access memories (SRAMs), erasableprogrammable read only memories (EPROMs), electrically erasableprogrammable read only memories (EEPROMs), and Flash memories.Integrated circuits may also include combinations of one or more ofthese specific types of integrated circuit. For example, an ASIC mayinclude a portion of an embedded DRAM.

Integrated circuit technology continues to rapidly advance. Modernintegrated circuits may contain hundreds, thousands, or even millions ofindividual devices (e.g., transistors, resistors, diodes, capacitors,and others) or cells. Such designs are much too large for an integratedcircuit designer to manage effectively manually. For example, anintegrated circuit design may have hundreds or thousands of inputs andoutputs that need to be routed. To route interconnect manually betweenthe inputs and outputs, it would take an integrated circuit designer aninordinate amount of time.

Therefore, automation tools are needed to make easier and expedite thetask of designing an integrated circuit. It is important to be able toproduce a circuit design and layout meeting or exceeding the designobjectives before the integrated circuit is fabricated. This will helpavoid a costly redesign to correct errors or improve performance to meetspecifications. Techniques are needed to provide high-performancecircuit designs and circuit layouts.

Speed in the design process is also an important consideration for anEDA system. Time-to-market pressures demand design tools provide rapid,accurate results, especially for large complex designs. By obtainingresults more quickly, designers can make more meaningful decisions ondesign tradeoffs by not having to wait for days to even weeks to obtainaccurate results.

As a component of an EDA system, automatic interconnect routers, orrouters, have been developed to automate the placement of interconnectsin integrated circuit devices. Routers generate the geometry of theinterconnects to connect pins or a network of pins together. Traditionalrouters typically include a coarse routing process and a fine routingprocess. The coarse router provides a general path for interconnectrouting. The fine router provides the actual interconnect segments andtheir geometries. The fine router creates interconnect routes that are“clean.” Clean refers to making routes that do not have design ruleviolations (such as meeting timing, crosstalk, and antenna effectspecifications) and do not overlap other structures (such as otherinterconnect routes and obstacles).

It is desirable to provide better or improved routing quality when usingan automatic router. Better routing quality refers to an improvedrouting pattern or design in order to enhance signal propagationcharacteristics, such as reducing noise, reducing signal propagationtime, and other signal characteristics. In particular, traditionalrouters do not necessarily generate optimal linear interconnects. Forexample, a traditional router often produces interconnect with many jogsand bends, which do not facilitate a fast signal path. Linearinterconnects are desirable so as to improve integrated circuitperformance, reduce resistance and capacitance of interconnects, reducedie size, and improve circuit layout organization.

As a result of the shortcomings of traditional automatic routers,integrated circuit designers manually reroute interconnects to increaselinear interconnects. However, manual rerouting is time consuming,especially for large designs, may introduce design rule violations, andthe results of manual rerouting may not be optimal.

As can be seen, techniques are needed to route interconnects ofintegrated circuits in an optimal way for improving designs, especiallyimproving the routing quality and speed of automated routing.

BRIEF SUMMARY OF THE INVENTION

The present invention provides a technique for routing interconnects ofintegrated circuits, and is broadly applicable to many types ofintegrated circuit including custom, semicustom, and high-performanceintegrated circuits. In an embodiment, the technique of the presentinvention is embodied in a computer software program that is to beexecuted by a computer system. In particular, the technique facilitatesimproved routing quality of interconnects and has fast execution times.The technique is applicable to small circuits having relatively fewcomponents and is especially suited for integrated circuits havinghundreds, thousands, or millions of components.

A spine router is a specialized application for routing connectivity inlong, relatively thin areas or routing areas with high aspect ratios,such as a ratio or 4:1 or greater. These long, relatively thin areas aresometimes referred to in this application as a spine, channel, pipeline,or canal. An example of a routing area with a high aspect ratio is anarea found between peripheral logic devices of memory array blocks inmemory devices or devices with embedded memory. Another example of arouting area with a high aspect ratio is an area found in datapathdesign, such as in an arithmetic logic unit (ALU) or floating pointprocessing unit (FPU) or a processor or embedded processor. Datapathdesigns will have these high aspect area routing areas as the number ofwidth of the processor increase, such as 64-bit processors, 128-bitprocessors, and so forth.

Long, relatively thin routing areas typically contain connectionsbetween pins (sometimes referred to as connectors or subpins) separatedby large distances in one direction and small distance in the other. Thetechnique lays down a single spine interconnect per net that extends inthe long direction between the two outermost pins on the net. A net is aset of coupled pins. Then the pins are “stitched” onto the spineinterconnect. The pins are connected by a straight interconnect to thespine interconnect if possible. Otherwise, they are connected by aninterconnect with a minimum cost-based deviation from a straightinterconnect. The placement of the spines are made so as to minimize theoverall connection distance and corresponding signal delay. Although aspine router is well suited for routing in a spine, it can be used toroute interconnects anywhere in a design, including areas outside thespine.

In an embodiment of the invention, a method for routing at least oneinterconnect of an integrated circuit is provided. At least two pins tocouple are identified. A route area is calculated. The route areaextends a distance in a first direction to comprise positions in thefirst direction of the at least two pins. A spine interconnect is routedto extend in the first direction an entire length of the route area inthe first direction. A plurality of stitching interconnects are routedin a second direction to couple each of the at least two pins to thespine interconnect. The second direction is orthogonal to the firstdirection. In this embodiment, the method may further includedetermining if at least one forbidden area is located within the routearea. The at least one forbidden area extends in the first direction theentire length of the route area in the first direction and includes atleast one obstacle (i.e., an area on specific layers that presents arestriction to routing or placement). Routing the spine interconnectavoids the at least one forbidden area.

In another embodiment, stitching interconnects may be automaticallyrerouted in the first direction and second direction to avoid obstacles.Alternatively, one or more edges of the routing area may coincide withone or more edges of chips or circuit elements.

In an embodiment of the invention, the spine interconnect may beposition in the second direction to reduce an average length of thestitching interconnects. For example, the position of the spineinterconnect in the second direction can be the weighted averageposition in the second direction of the connected pins in the route areaor, alternatively, the closest position to the weighted average positionoutside of a forbidden area.

In an alternative embodiment, N pins are identified to couple. Arectangular route area that includes the positions in a first directionof the N pins is calculated. A determination is made as to whether atleast one forbidden area is located within the route area. A spineinterconnect is routed extending in the first direction an entire lengthof the route area in the first direction. Routing of the spineinterconnects is outside of the at least one forbidden area. N stitchinginterconnects are routed in a second direction to couple each of the Npins to the spine interconnect. The at least one forbidden area is as arectangular area that includes at least one obstacle and extends in thefirst direction an entire length of the route area in the firstdirection. The first direction is orthogonal to the second direction.

The spine interconnect may be positioned in the second direction toreduce an average length of the N stitching interconnects. For example,the position of the spine interconnect in the second direction can bethe quotient of (i) the sum of the positions of the N pins in the seconddirection and (ii) N or, alternatively, the closest position to suchquotient outside of any forbidden area.

In yet another embodiment of the present invention, a computer programproduct stored on a computer-readable storage medium for routing aplurality of nets of an integrated circuit is provided. The computerprogram product includes: code for identifying pins to couple for eachnet; code for calculating a route area for each net to comprisepositions in a first direction of the pins for such net; code fordetermining for each route area if at least one forbidden area islocated within the route area; code for routing outside of the at leastone forbidden area a plurality of spine interconnects extending in afirst direction the entire length of each corresponding route area inthe first direction; and code for routing a plurality of stitchinginterconnects in a second direction to couple each of the pins to thecorresponding spine interconnect. The at least one forbidden area beingan area to include at least one obstacle and extending in the firstdirection an entire length of the corresponding route area in the firstdirection.

In another embodiment, a method of displaying a route area for spinerouting is provide. A circuit layout having a spine area is displayed ona display device. A rectangular box is drawn to encompass at least aportion of the spine area, the portion includes at least two pins tocouple. The circuit layout along with the rectangular box is displayedon the display device.

Other objects, features, and advantages of the present invention willbecome apparent upon consideration of the following detailed descriptionand the accompanying drawings, in which like reference designationsrepresent like features throughout the figures.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a system of the present invention for performing electroniccircuit design, including spine interconnect routing.

FIG. 2 shows a simplified system block diagram of computer system 1 usedto execute the software of the present invention.

FIG. 3 shows a simplified functional block diagram of an exemplary EDAsystem incorporating aspects of the present invention.

FIG. 4 shows a simplified flow diagram of routing interconnectsaccording to an embodiment of the invention.

FIGS. 5( a) and 5(b) illustrate examples of interconnect routing by atraditional router and a router according to an embodiment of theinvention, respectively.

FIGS. 6( a), 6(b), 6(c), and 6(d) shows, as an example, steps forrouting interconnects in a spine area for a single net according to anembodiment of the invention.

FIG. 7 shows, as an example, interconnect routing of a multiple devicerow design according to an embodiment of the invention.

FIGS. 8( a), 8(b), 8(c), and 8(d) show exemplary embodiments ofautomatic routing of shielding.

FIGS. 9( a) and 9(b) show exemplary embodiments of automatic routing ofshielding for bus interconnects.

FIGS. 10( a) and 10(b) illustrate automatic interleaving of businterconnects according to an embodiment of the invention.

FIG. 11 illustrates automatic interconnect routing with time-basedconstraint matching.

FIG. 12 shows a flowchart of routing interconnects according to anembodiment of the invention.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1 shows an electronic design automation (EDA) system of the presentinvention for designing an electronic circuit or integrated circuit,including automatic shape-based routing of interconnect in spines forintegrated circuit design. In an embodiment, the invention is softwarethat executes on a computer workstation system, such as shown in FIG. 1.FIG. 1 shows a computer system 1 that includes a monitor 3, screen 5,cabinet 7, keyboard 9, and mouse 11. Mouse 11 may have one or morebuttons such as mouse buttons 13. Cabinet 7 houses familiar computercomponents, some of which are not shown, such as a processor, memory,mass storage devices 17, and the like. Mass storage devices 17 mayinclude mass disk drives, floppy disks, Iomega ZIP™ disks, magneticdisks, fixed disks, hard disks, CD-ROMs, recordable CDs, DVDs,recordable DVDs, flash and other nonvolatile solid-state storage, tapestorage, reader, and other similar media, and combinations of these. Abinary, machine-executable version, of the software of the presentinvention may be stored or reside on mass storage devices 17.Furthermore, the source code of the software of the present inventionmay also be stored or reside on mass storage devices 17 (e.g., magneticdisk, tape, CD-ROM, or DVD).

Further, FIG. 2 shows a system block diagram of computer system 1 usedto execute software of the present invention. As in FIG. 1, computersystem 1 includes monitor 3, keyboard 9, and mass storage devices 17.Computer system 1 further includes subsystems such as central processor202, system memory 204, input/output (I/O) controller 206, displayadapter 208, serial or universal serial bus (USB) port 212, networkinterface 218, and speaker 220. The invention may also be used withcomputer systems with additional or fewer subsystems. For example, acomputer system could include more than one processor 202 (i.e., amultiprocessor system) or the system may include a cache memory.

Arrows such as 222 represent the system bus architecture of computersystem 1. However, these arrows are illustrative of any interconnectionscheme serving to link the subsystems. For example, speaker 220 could beconnected to the other subsystems through a port or have an internaldirect connection to central processor 202. Computer system 1 shown inFIG. 1 is but an example of a computer system suitable for use with thepresent invention. Other configurations of subsystems suitable for usewith the present invention will be readily apparent to one of ordinaryskill in the art.

Computer software products may be written in any of various suitableprogramming languages, such as C, C++, Pascal, Fortran, Perl, MatLab(from MathWorks), SAS, SPSS, and Java. The computer software product maybe an independent application with data input and data display modules.Alternatively, the computer software products may be classes that may beinstantiated as distributed objects. The computer software products mayalso be component software such as Java Beans (from Sun Microsystems) orEnterprise Java Beans (EJB from Sun Microsystems). An operating systemfor the system may be one of the Microsoft Windows® family of operatingsystems (e.g., Windows 95, 98, Me, Windows NT, Windows 2000, WindowsXP), Linux, UNIX, or Sun OS. Other operating systems may be used.

Furthermore, the computer may be connected to a network and mayinterface to other computers using this network. For example, eachcomputer in the network may perform part of the task of the many seriesof spine routing steps in parallel. Furthermore, the network may be anintranet, internet, or the Internet, among others. The network may be awired network (e.g., using copper), telephone network, packet network,an optical network (e.g., using optical fiber), or a wireless network,or any combination thereof. For example, data and other information maybe passed between the computer and components (or steps) of a system ofthe invention using a wireless network using a protocol such as Wi-Fi(IEEE standards 802.11, 802.11a, 802.11b, 802.11e, 802.11g, and 802.11i,just to name a few examples). For example, signals from a computer maybe transferred, at least in part, wirelessly to components or othercomputers.

FIG. 3 shows a simplified functional block diagram of an exemplary EDAsystem 300 incorporating aspects of the present invention. The EDAsystem includes a number of software tools, any of which may access ashaped-based database model 301 containing an integrated circuit design,or one or more portions of an integrated circuit design. The EDA systemprovides such tools as a graphical user interface 302, global router304, manual editor 306, detail router 308, engineering change order(ECO) engine 310, timing-driven routing engine 312, extraction engine314, data export interface 318, DSM process engine 320, and siliconinterface format 322. An EDA system may include any number of the systemtools shown in FIG. 3, and in any combination. Further, the EDA systemmay include additional tools not shown in FIG. 3.

An EDA system may be a grid-based system or shape-based system.Techniques of the present invention may be applied to a gridded orshape-based EDA system. A grid-based system relies heavily on theconcept of a grid and routing grids. Gridded modeling, however, becomesdifficult to implement successfully as the routing and feature sizesbecome smaller. The amount of data increases according to a square law,which means that tasks become increasingly more computationally complexand time-consuming as the amount of data increase. As feature sizes inintegrated circuits continue to shrink, more features or geometries maybe fitted into the same unit area of an integrated circuit. Therefore,it is important for an EDA system to handle increasingly complexintegrated circuits and provide output or results quickly.

The techniques of the invention are especially suited for a shaped-basedsystem, which may also be referred to as a gridless system. Ashape-based system has no defined cell size. Each cell, or expansionarea, is as large as possible. In brief, a shape-based system can expandedges, which means that an edge of an enclosing rectangle (or otherpolygon) may be expanded in the direction of the edge as far as desireduntil the edge finds an obstacle. This may be referred to as a “flood”operation. The rectangle may be representative of any polygon of theintegrated circuit, such as a net, contact, via, transistor gate, ortransistor active area. Blocked edges are edges that cannot be extendedbecause they are blocked by a perimeter of another rectangle, such asanother segment, net, or obstacle. Once an obstacle is encountered, thena shape-based approach floods around the obstacle—making a ninety degreeor other angle (any angle may be used) turns as needed to route aroundthe obstacle.

Chip design, be it analog, custom or digital, will increasingly sufferfrom timing and signal integrity issues, and in particular crosstalk, asgeometries continue to decrease and ever more fine wires are introduced.Gridded solutions are not flexible enough to resolve these issues, letalone achieve a high rate of routing completion. A high performancetiming and crosstalk-driven routing solution will become a mandatoryrequirement in physical design. The grid-based approach offers fastrouting but requires customization to handle off-grid connections and isinefficient for post-route timing and signal integrity optimizations.When net widths and spacings must be changed to reduce resistance orcross-talk, grid-based approaches waste space by moving nets to the nextavailable grid and waste time by resorting to rip-up and re-routetechniques if a move to the next available grid is not possible. Griddedsystems are not good at irregular intervals, irregular spacings, orrouting things that do not fit onto a regular grid. The gridlessapproach easily handles off-grid connections and is efficient forpost-route optimizations. In a shape-based or gridless system, thelayout may be a gridless layout, which means there is no grid whichstructures or polygon of the layout are associated with.

In an embodiment, the structure of database 301 facilitates shape-basedoperations. For example, a structure of this database may include anobstacle tree having nodes and leaves containing holds the obstacles ofan integrated circuit. This tree structure permits rapid determinationof where obstacles are when doing operations on the database, such asrouting nets.

An specific example of an electronic design automation system is theLyric Physical Design Framework™, made by Pulsic Limited. Lyric is ahigh performance auto-interactive IC physical design solution foranalog, custom, digital, mixed-signal, embedded DRAM or SRAM, andsystem-on-chip (SoC) design. The system incorporates solutions forplacement, routing, ECO, timing closure, signal integrity, and powerrouting. Another example of an EDA system is the Prelude Physical DesignFramework™, also made by Pulsic. Prelude is an ultra high capacity, highperformance IC physical design solution for very large digital/ASICdesigns, running into millions of nets and cells. Prelude incorporatessolutions for placement, routing, and ECO, powered by a scalablearchitecture, using a true distributed computing environment.

In FIG. 3, the EDA system 300 includes one or more of the componentsdiscussed below, in any combination. One skilled in the art willrecognize that one or more of components shown in FIG. 3 may not berequired to practice specific aspects of present invention. For example,when extraction engine 314 is omitted from system, the system couldstill perform spine routing of interconnection, but without RCextraction capabilities.

A graphical user interface 302 provides users a graphical interface inwhich to perform operations on the integrated circuit design. Forexample, the user can view the integrated circuit using the graphicalinterface. The user may use the mouse and cursor to select a particularpolygon or feature, such as a net. The user may expand or zoom intoareas of the integrated circuit design.

A global router 304 is an automatic routing engine that routsinterconnects of the integrated circuit, thus enabling large designs tobe routed more rapidly and completely. The global router may alsoprovide visual and quantitative analysis of the congestion in the designby highlighting problem areas that can be fixed by incrementaladjustments to the placement or floor plan. The global router issometimes referred to as a coarse router because it provides generallythe routes for the interconnect, and may work in conjunction with adetail router 308 (discussed below) to place the actual geometries ofthe interconnects.

A manual editor 306 is a shape-editing suite for creating or editingwires, metal, keep-outs, routing areas, and the ability to partition adesign into smaller areas. These areas can then be worked uponindividually and can be recombined at a later stage to complete thedesign. Full on-line design rule checking (DRC) ensures that manualoperations are completed error-free first time. Tools may automaticallypush-aside existing wiring to make way for new wires and semi-automaticrouting tools can quickly close down troublesome nets by allowing theuser to guide the routing engine around complex areas of the design.

The detail router 308 is an automatic router that completes the wiringin a design by determining the specific routes for each interconnect.The detail router may complete a portion of the wiring for a design,such as for sections or specified cells of the design, or may completeall the wiring of the design. The detail router may route starting fromscratch or from partially completed routing. In an implementation, theglobal router determines the general routes for the interconnect, andthe detail router takes this routing information from the global routerand puts in the specific geometries.

An ECO engine 310 provides a capability to handle late stage engineeringchange option (ECO) changes. Every element of the design should bemodeled incrementally, thus eliminating the need to ever restart thephysical design, no matter what changes may need to be made fromupstream or downstream processes in the design. ECO engine capabilitiescan include the ability to shove or push cells aside to make space fornew or relocated instances, and the ability to drop groups of componentsand automatically find legal placement sites for them, minimizing thedisruption to the design. When pushing or pulling cells, the wiresremain connected to the cells and the wires lengthen, shorten, and moveas needed, if possible, to keep the connections. The detail router canthen repair any violating interconnects and stitch-up any newlyintroduced interconnects, with minimum impact, ensuring circuitstability is never compromised.

A timing-driven routing engine 312 provides timing analysis ofinterconnects. Used in concert with the detail router, the timing-drivenrouting engine can determine the path of least delay for critical nets.Furthermore, the timing-driven routing engine, in concert with anextraction engine, can actively select a longer path with a lowerassociated delay (e.g., due to lower capacitance) in preference to ashorter but slower route.

An extraction engine 314 is provided. Utilizing a unified, high speed RCextraction engine, the crosstalk functionality accurately calculates thecoupling between victim and aggressor signals. This same technology isthen used to identify potential problems, and automatically implements aDRC correct solution without changing the path of the signalunnecessarily. In addition, signal-to-signal (or within and betweenclasses of signals) spacing rules can be applied, and fully controllableautomatic shielding can be used to protect particularly sensitivesignals. The user is provided with unprecedented control over theresistance and capacitance in the signal path. Again, using the advancedbuilt-in RC extraction technology, the user can separately control pathresistance and capacitance, which is particularly useful for analog andmixed signal design.

In an implementation, the global router and detail router are linked tothe extraction engine. So, for example, when running, the global routeror detail router, or both, can call the extraction engine to obtain RCextraction information. The global router, detail router, or both, mayuse the RC extraction information when creating the interconnect routes.For example, the detail router may obtain RC extraction info from the RCengine in order determine whether an interconnect route meets currentdensity rules, and widen the interconnect width as needed.

In a specific embodiment, the Lyric internal RC extraction drivenconstraints manager has been enhanced to ensure matching on a per-layerbasis as well as the whole net or subnet. There is an increasingrequirement in today's designs to match length, time, resistance andcapacitance across nets on a per-layer basis. This ensures total netconstraints are met as before but also guarantees designated nets canmatch on a per-layer basis.

The tightly coupled, high-speed RC extraction engine is used both duringrouting (global router or detail router, or both) and for post-routingextraction to reach timing closure in record time. Integrated timinganalysis and curative features enable the management of delay within thedesign; the matching of delays within and between multiple nets; thesharing of delay between many nets in a signal path; and reducing thedelay in critical nets by minimizing resistance and capacitance.Intelligent lengthening increases the delay of the faster nets,preventing shoot-through.

The detail router can address current density issues in analog design,to help achieve an optimum routing result for the entire design, andsave valuable design time. The current information which is used todrive this current density functionality may come from, for example, afront-end schematic engine or simulation engine. The router canautomatically route a net at varying widths to guarantee sufficienttrack widths at every point in the topology of the net to carry allcurrent requirements. DRC and process checking tools can locate anyinsufficient width areas that may exist in any routing, includingautomatically generated routing, manual routing, and importedprerouting.

A data export interface 316 is provided so data of the EDA system 300may be exported for other processes. For example, output from the EDAsystem may be passed through the export interface to other EDA systemsor software tools provided by other manufacturers. The export interfacewould provide output in a form, format, or structure, acceptable byprocess or software tool which is being exported to.

A data import interface 318 provides the means to import data, such as acircuit layout, netlist, or design constraints. The data to be importmay be in various formats including data saved from other EDA systems orsoftware tools. In addition, the source of the data may be a database,floppy drive, tape, hard disk drive, CD-ROM, CD-R, CD-RW, DVD, or adevice over a communication network. Some examples of import formatsinclude text, ASCII, GDSII, and LEF/DEF.

A DSM process engine 320 is provided. The DSM process engine does designrule checking (DRC). Design rule checking locates and highlights where adesign is breaking process design rules. For example, a design rule isthe minimum spacing between metal lines (i.e., geometries on a specificlayer). A design rule may be the minimum width of a metal line. A designrule may be a minimum polysilicon-to-diffusion spacing. There are manyother design rules for a typical process. Some design rules are forchecking geometries within a single layer, and some design rules are forchecking geometries of two or more layers.

A silicon interface format 322 is provided, which in a specificimplementation is an ASCII database format. However, in otherimplementations, other silicon interface formats may be used.

A user may design an integrated circuit using a system such as shown inFIG. 3. A representative flow for designing an integrated circuit isoutlined in steps 1 to 7 below in table A. Step 5 is further subdividedinto three substeps.

TABLE A Integrated Circuit Design Flow 1. Provide Circuit Specification2. Create Circuit Design 3. Generate Netlist 4. Simulate Performance andVerify Functionality of Circuit Design 5. Generate Layout 5a. LayoutDevices 5b. Connect Devices 5c. Connect Blocks of Circuitry 6. PhysicalVerification and Design Checking 7. Create Masks 8. Fabricate IntegratedCircuit

Although the steps above are listed in a specific order, the steps maytake place in any order, as desired and depending on the specificapplication. These are general steps that may be applied to designing anintegrated circuit including custom, a gate array, standard cell, fieldprogrammable logic, microprocessor, digital signal processor,microcontroller, system-on-a-chip (SOC), memory, ASIC, mixed signal,analog, radio frequency (RF) or wireless, and others. There may beadditional or other steps, which may replace one or more above steps.Certain steps may be repeated. For example, after generating a layoutfor a circuit design, the step of simulating performance and verifyingfunctionality may be performed again. This time, the parasitics and RCconsiderations from the layout cannot be backannotated into the netlistor circuit design, and the design simulated again. The results of thissimulation will presumably be more accurate because more preciseinformation is provided.

In step 1 of the flow, a circuit specification is provided. This is aspecification or description of what the integrated circuit or circuitwill do, and what the performance will be. For example, the integratedcircuit may be a memory integrated circuit with particular address inputpins and input-output (I/O) pins. Integrated circuit performance may bequantified terms in AC and DC performance. For example, AC performancerefers to propagation delays, maximum clock frequency, clock-to-outputdelay, hold time, and other similar parameters. DC performance refers tomaximum supply current, maximum and minimum supply voltage, outputcurrent drive, and other similar parameters.

In step 2, an engineer creates a circuit design that presumably willmeet the circuit specification. This circuit design may includetransistors, resistors, capacitors, and other electronic components. Theengineer uses these electronic components as building blocks of thedesign, interconnecting them to achieve the desired functionality andperformance. The engineer may make a custom design using electroniccomponent building blocks or use a gate array, where the building blocksare a set of cells set by the gate array manufacturer. The design may beinput using a graphical design tool such as schematic capture program,and any other design tool may be used. The circuit may be describedusing a high-level design language (HDL). These design tools will createa netlist (step 3) of the circuitry, which is a listing of thecomponents of the devices and their interconnections.

During the design phase, the engineer simulates the performance andverifies the functionality of the circuitry (step 4). There aretransistor and process models to model the components. Some simulationtools include Spice, which performs circuit simulation, and Verilog,which performs functional and timing verification. This is where theelectrical information for current density routing is generated.

After deciding upon an initial circuit design, the engineer beginslayout (step 5) of the circuitry. Layout refers to making thethree-dimensional dispositions of the element and interconnections tomake an integrated circuit. Making an integrated circuit is a layer bylayer process. Some layers of an integrated circuit are diffusion,polysilicon, metal-1, metal-2, contact, via, and others. There may bemultiple layers of the same material, but on different layers. Forexample, diffusion and polysilicon layers are used to make MOStransistors (step 5a). For example, metal-1 and metal-2 are twodifferent layers, where metal-1 is below the metal-2 layer. These metallayers may be connected together using a via. Metal is typically usedfor interconnections (step 5b) and supplying power and ground to thedevices.

Software tools may be used to help with the layout of the circuit, suchas the automatic routing of interconnect (steps 5b and 5c). Theinterconnect may be between devices. Devices and circuitry may begrouped into blocks or cells having inputs and outputs. The interconnectmay be between these blocks or cells (step 5b).

In step 6, after or while the layout is generated, the physical designis verified and design is checked. For example, some of operations mayinclude layout-versus-schematic (LVS) checking, electrical rule checking(ERC), design rule checking (DRC), layout simulation (especially foranalog circuitry), power analysis, and timing analysis. Physicalverification and design checking is often iterative. Based on the designcheck, a design engineer or user may make changes to the design orlayout, or both and the design may be rechecked in order to make sureany areas of concern or design errors have been cleared.

The result of layout is data (e.g., provided in GDSII format or otherformat) that is used to make the masks (step 7). The masks are used tofabricate the integrated circuit (step 7) using a photolithographyprocess. Typically, there are many “copies” of the same integratedcircuit fabricated on the same wafer. Each integrated circuit is a “die”on the wafer. Good dies are separated from the bad dies. The good diesare sawed and packaged. Packaging generally includes encapsulating thedie in plastic or other material, and connecting pads of the integratedcircuit to pins of the package, where the integrated circuit can beinterfaced.

The invention provides techniques to automatically route nets in spineareas. The invention would help with steps 5b and 5c (routinginterconnect) of the design process.

FIG. 4 shows a simplified flow diagram of routing interconnectsaccording to an embodiment of the invention. In step 402, the systemidentifies the pins on a net to be routed. In one embodiment, a netlistcan be used to identify the pins. Alternatively, a user can individuallyselect pins to designate the net. Based on the disclosure and teachingsprovided herein, a person of ordinary skill in the art will appreciatehow to implement to identify pins on a net. The system, in step 404,determines a route area which bounds the pins on the net. In oneembodiment, the longer direction of the route area extends from the twomost oppositely disposed pins on the net in the long direction of thespine.

A spine is a routing area that is long and relatively thin. It may alsobe referred to as a high aspect ratio routing area, where for example,the aspect ratio between length and width is 4:1 or greater. Forexample, the length to width ratio may be 4.5:1, 5:1, 6:1, 7:1, 8:1,10:1, 12:1, 16:1, or even greater. An example of a routing area with ahigh aspect ratio is an area found between peripheral logic devices ofmemory array blocks in memory devices or devices with embedded memory.Another example of a routing area with a high aspect ratio is an areafound in datapath design, such as in an arithmetic logic unit (ALU) orfloating point processing unit (FPU) or a processor or embeddedprocessor. Datapath designs will have these high aspect area routingareas as the number of width of the processor increase, such as 64-bitprocessors, 128-bit processors, and so forth.

Next, in step 406, the system routes a spine interconnect, that extendsthe length of the route area in the long direction of the spine. Theplacement of the spine interconnect with respect to the directionorthogonal to the long direction is determined as to avoid any obstacleand minimize the average length of stitching interconnects. In step 408,stitching interconnects are routed from pins to the spine interconnect.Stitching interconnects run directly in direction orthogonal to the longdirection to minimize interconnect length, unless the stitchinginterconnects is required to take one or more detours to avoid anobstacle or satisfy a design constraint (such resistance, capacitance,or timing constraints).

The system as shown in step 410 verifies that the computed routingsatisfies design constraints. In one embodiment, the system may changethe spacing, length, or path of the interconnects so as to satisfy adesign constraint. Instances where a design constraint is not satisfiedis an error. In decision block 412, if further iterations of the routingare specified, the system reroutes the spine and stitchinginterconnections to eliminate or reduce errors. The number of iterationscan be directly specified by the user (for example, one, two, five,twenty, or more iterations) or determined by an algorithm (for example,iterations continue until a best solution is found as determined by thenumber of errors, shortest average length of interconnects, or lowestcost). In step 414, the system reports the results of the routing.Reporting results can take many forms, such as outputting the routed netto a screen 5 or printer device, or saving data to a file for a designautomation tool.

TABLE B # A pseudo code description of a spine router FOR channel INchannels { net_list = process_net_list( channel ); FOR net IN net_list {   channel_route_net( net );  } } process_net_list( channel ) {  FORnet IN channel  {   net.ideal_position = calculate_ideal_position( net);   net.channel_rectangle = calculate_channel_rectangle( net ) ;  add_to_net_list( net );  } return net_list; } # The ideal position fora net is calculated to be the position that will # result in the minimumamount of stitch routing. # The channel rectangle for a net is theintersection of the rectangle that # encompasses the items on the netand the rectangle of the channel itself. channel_route_net( net ) { site_list = create_initial_sites( net ) ;  WHILE length( site_list ) >0  {   current_site = next_entry( site_list );   obstacle =find_obstacle_overlapping_current_site( ) ;   IF ! obstacle BREAK;  new_sites = split_site_around_obstacle( obstacle );  add_sites_to_list( new_sites ) ;  }  IF length( site_list ) > 0  {  current_site = next_entry( site_list );   create_net_channel_routing(current_site ) ;  } } # create_initial_sites(net) # Creates a site whoserectangle is net.channel_rectangle for each layer in the channel . #split_site_around_obstacle(obstacle) # Creates two new sites either sideof the original site as long as the # new sites are wide enough to fitthe channel routing. # add_sites_to_list # Sites added to the list areordered by cost. The cheapest cost site being first in the list. # Thecost is calculated using the distance of the site from the idealposition for that net. # An extra cost is added to account for thenumber of via that would need # to be used to stitch the channel to thepins on the net. # create_net_channel_routing( current_site ) # Createsthe routing wire (or spine interconnect) for the net as close as #possible to the net's ideal position as the site will allow. # # Notewires created become obstacles to subsequent nets along with # existingdatabase obstacles.

FIGS. 5( a) and 5(b) illustrates, by way of a simple example, some ofthe differences of interconnect routing performed by a traditionalrouter and a router according to embodiment of the present invention (a“spine router”). FIG. 5( a) shows a minimal routing pattern to connecteach net produced by a traditional router.

As shown in FIG. 5( b), the spine router places a shared minimal linearspine interconnect at a calculated position in the spine region (i.e.,the vertical direction in FIG. 5( b)) for each net. For example, foreach net, the spine router places spine interconnect 510 in the spineregion. The position of spine interconnect 510 in the spine region iscalculated to provide the shortest average length of a net'sinterconnects from its pins to the spine interconnect, or stitchinginterconnects. As a consequence, spine interconnect placement in thevertical direction is weighted to the side where there are more netpins. In our example, spine interconnect 510 is placed in the spineregion to reduce the average length of stitching interconnects 508 foreach net. Likewise, the length of each spine interconnect 510 along thedirection of the spine, or priority direction, is the minimal length toprovide for a straight, perpendicular stitching interconnects 508. Evenso, it may not be always possible to route a stitching interconnect thatis a straight, perpendicular interconnect. In some instances, astitching interconnect may need to be routed with a minimum jog to avoidan obstacle 506 (such as, a cell, pin, or area outside a user designateddesign area).

FIGS. 6( a), 6(b), 6(c), and 6(d) illustrate the process ofautomatically routing a spine design according to an embodiment of thepresent invention. In this simple example, the spine router mustidentify pins of the net and define a route area within the spineregion. It must also identify an obstacle (e.g., an area on specificlayers that presents a restriction to routing or placement) and definethe resulting forbidden area. Once the spine router has defined theroute area and the forbidden area, it can route a spine interconnect andstitching interconnects.

First, in this example, the spine router reviews a netlist, whichspecifies that pins 606, 608, and 610 of cells 602, 604, and 612,respectively, are to be connected. In FIG. 6( a), the router defines aroute area 611 that encompasses pins 606, 608, and 610 and extends inthe longwise direction, or priority direction, of the spine area fromthe two farthest apart pins, pins 606 and 610. Route areas arerectangular due to the desired orthogonality of spine interconnects andstitching interconnects. Next, the spine route identifies obstacle 614within the route area 611. As seen in FIG. 6( b), the spine routerdefines a forbidden area 616 that encompasses obstacle 614 and expandsthe entire length of the route area 611 in the priority direction. Thespine router will exclude forbidden area 616 for placement of a spineinterconnect. Due to obstacle 614, any spine interconnect placed in aforbidden area 616 would fail to span across the entire route area.

FIG. 6( c) illustrates placement of a spine interconnect 618 in routearea 611. The spine interconnect should span the entire length of theroute area in the priority direction to facilitate orthogonal stitchinginterconnects from pins 606, 608, and 610 to spine interconnect 618.Placement of spine interconnect 618 in a direction secondary direction(i.e., direction orthogonal to the priority direction) may be at anylocation outside the forbidden area 616. It is desirable for the spineto not have breaks (such as using vias and contacts to utilize differentconductor layers), bends, or jogs, as would happen with routing with atraditional router, because such a straight spine provides better signalpropagation. Therefore, the automated routing technique of the inventionprovides improved routing quality.

In an embodiment of the present direction, the spine router routes spineinterconnect 618 to minimize the average length of stitchinginterconnects for the net. Minimized interconnects provide reducedsignal delays for improved timing performance, reduced occupied surfacearea for smaller device package size, and reduced resistances for lessdevice power consumption. The spine router calculates the averageposition in the secondary direction of pins 606, 608, and 610. If thecalculated position falls outside forbidden area 616, a spineinterconnect 618 can be routed at that location. Otherwise, the spineinterconnect 618 can be routed at the closest location to the calculatedposition which is outside of forbidden area 616.

In our relatively simple example, the calculated position of spineinterconnect 618 is, from the top of the spine, one-third the width ofthe spine. The position reflects the weighting of two pins at the top ofthe spine against the one pin at the bottom of the spine. In morecomplex examples with N pins on a net, the calculated position of thespine interconnect in the secondary direction can be described by theexpression (X₁+X₂+ . . . +X_(N))/N where X_(i) is the position of a pini in the secondary direction. In an alternative implementation, thecalculated position of the spine interconnect in the secondary directioncan be, or be about, the modal position of the pins on the net, or theposition in the second direction that contains more individual pins ofthe net than any position.

There are many different techniques to place or position the spineinterconnect so that it improves routing quality, and any of thesetechniques may be used. For example, some techniques consider an averageor weighted average position, so that the spine is positioned closer towhere there are more number of pins. Other techniques involve takinginto consideration the modality. The highest mode is a position wherethere are the greatest number of pins in one place. Still furthertechniques take into consideration, not necessarily the highest mode,but the significant places where there are a large number of pins. Atechnique is to determine a spine position where the stitch connectorswill line up to provide good route quality.

In FIG. 6( d), the spine router routes stitching interconnects 620 toconnect pins 606, 608, and 610 to spine interconnect 618. In order tominimize interconnect length, stitching interconnects 620 are routed asstraight lines directly to, and orthogonally with, spine interconnect618. Pins 606, 608, and 610 are now connected as a net.

However, when routing multidevice row nets, it may not always bepossible to route a stitching interconnect as a straight line due to anobstacle (e.g., cell, pin, and others) in the path. In suchcircumstance, the spine router determines the least expensive deviationfrom the straight path based on a cost function. By and large, theresulting deviation will be a minimum jog to avoid the obstacle. Asshown in the example of FIG. 7, the straight path from pin 702 to spineinterconnect 704 is blocked by cell 706. According to an embodiment ofthe present invention, the spine router can route the stitchinginterconnect 708 with a minimum jog to get around cell 706. This minimumjog can be determined by a cost function based on numerous factors,including length of interconnect, capacitance of interconnect, andothers.

FIG. 7 also illustrates that, other than stitching interconnectdeviations, the spine router uses the same techniques for multidevicerow routing as with single device row routing. For example, in FIG. 7,the spine router defines a rectangular route area 710 that encompassesall the pins to a net. Next, it identifies obstacle 712 and defines aforbidden area (not shown). The spine router calculates a trenchinterconnect position in the secondary direction based on the averageposition of the pins of the net. In this example, the calculatedposition falls within the forbidden area and, therefore, spineinterconnect 704 is placed at the closest location in the secondarydirection of the calculated position. From this example, it can be seenthat techniques of the present invention can be applied to routing netsover 1, 2, 3, 5, 10, 20, or more spine areas.

In an embodiment of the invention, the spine router can automaticallyroute one or more shields for designated spine interconnect. A shield ispiece of metal neighboring, surrounding, or nearly surrounding aninterconnect being shield to reduce the stray capacitances. Althoughtypically at ground potential, a shield can be any predeterminedpotential with respect to ground. The spine router routes the shieldwith the same routing pattern as the spine interconnect separated by asmall distance. In one embodiment of the present invention, thisdistance for each shield is calculated to be the minimum design rulechecking spacing, or distance satisfying all design constraints, forsuch shield.

The shield is adjacent to the spine interconnect at either side or,alternatively, above or below. Exemplary shield configurations are shownin FIGS. 8( a), 8(b), and 8(c). FIG. 8( a) shows a pair of shields 804on each side of an interconnect 802. FIGS. 8( b) shows a pair of shields808 above and below interconnect 806. FIG. 8( c) shows an interconnect810 surrounded on four sides by shields 812. FIG. 8( d) shows analternative embodiment using four shields 816 to surround interconnect814. Additional shield configurations can be fashioned using 1, 2, 3, 4,or more shields per interconnect. In an alternative embodiment, thespine router may automatically route a shield with a separation distancebelow a specified design constraint if insufficient physical space isavailable. In yet another embodiment, the spine router can also shield astitching interconnect using the same techniques.

In an embodiment of the invention, a spine router can route a bus. A busis a set of nets that use the same routing pattern. Bus routing istypically used for address, datapath, and other timing-critical nets toensure that all bits in the bus have very similar delay characteristics.FIGS. 9( a) and 9(b) show exemplary embodiments of automatic routing ofshielding for bus interconnects. In this example, the bus includes businterconnects 904, 906, and 908. The spine router automatically placesshields 902 and 910 on each side of the bus. In one embodiment, shields902 and 910 follow alongside the path of the bus when it travels in thepriority direction of the spine, or the spine interconnects of the bus.In an alternative embodiment, shields 902 and 910 can be routedalongside the entire path of the bus. The spine router can alsoautomatically interleave shields and bus interconnects. As illustratedin FIG. 9( b), shields 912, 916, 920, and 924 are routed to interleaveeach of the bus interconnects 914, 918, and 922.

In an embodiment of the present invention, the spine router canautomatically interleave a plurality of buses. Buses are interleaved toensure that all bits in the two buses have very similar delaycharacteristics. FIGS. 10( a) and 10(b) illustrate automaticinterleaving of bus interconnects according to an embodiment of theinvention. As illustrated in FIG. 10( a) bus 1 includes businterconnects 1002, 1004, and 1006, and bus 2 includes bus interconnects1008, 1010, and 1012. The spine router can reroute bus 1 and bus 2 tointerleave each bus interconnect of the two buses as shown in FIG. 10(b).

As the spine region can contain blockages (such cells andinterconnects), spine interconnects can be routed using layer jumpers.For example, an embodiment of the present invention, spine interconnectscan use layer jumpers to cross overlapping spine regions and henceoverlapping spine interconnects in the same layer. A lower priorityspine interconnect is moved onto a different layer, typically thestitching layer, for a small distance to cross over a higher regionpriority spine interconnect.

In an embodiment of the present invention, the spine router can route aplurality of interconnects to match length, resistance, or timing. Thespine router can perform constraint matching by adjusting: interconnectlength, neighboring interconnect spacing, or a combination thereof. Forexample, the spine router can automatically lengthen a shorter net (suchas by jogging an interconnect) to increase its length. FIG. 11 is asimple example of time-based constraint matching. If the time delay fora signal from cell 1102 to cell 1106 and cell 1104 to cell 1106 areconstrained to be approximately the same, the spine router canautomatically increase the length of interconnect 1108 to match thelength of interconnect 1110. In more complex designs, the spine routercan alternatively, or in combination, adjust the distance betweenneighboring interconnects to reduce stray capacitances, and thus improvetime performance. Without time constraint matching, nets will inherentlyhave different lengths, and therefore timing, due to the orthogonalnature of the spine, spine interconnects, stitching interconnects, andpin locations.

FIG. 12 shows a simplified flow diagram of routing interconnectsaccording to an embodiment of the invention. The steps described in FIG.12 are general steps that may be applied to routing interconnects in aspine region. The steps include receiving inputs, such as a number ofiterations to be performed for improved interconnect placement, prioritydirection of spine region, and pins from netlist. Next, the spine routerreviews the physical space in the spine regions, design constraints, andpin positions to determine spine and stitching interconnect placements.Interconnect routes can be adjusted by a user after routing. Forexample, as shown in FIG. 12, spine interconnects can be interleaved,which may involve manually moving the spine interconnects, orautomatically interleaving the interconnects. The next step is to reviewthe routing against design constraints, such as parasitics. Ifiterations are specified, the spine router can reroute interconnects tosatisfy design constraints or improve performance. The spine router nextdisplays the net and reports any design constraint violations. There maybe additional or other steps, which may replace one or more above steps.Certain steps may be repeated. For example, additional steps may beincluded to automatically route shielding or match signal timing forspecified interconnects.

Although specific embodiments of the invention have been described,various modifications, alterations, alternative constructions, andequivalents are also encompassed within the scope of the invention. Thedescribed invention is not restricted to operation within certainspecific data processing environments, but is free to operate within aplurality of data processing environments. Additionally, although thepresent invention has been described using a particular series oftransactions and steps, it should be apparent to those skilled in theart that the scope of the present invention is not limited to thedescribed series of transactions and steps.

Further, while the present invention has been described using aparticular combination of hardware and software, it should be recognizedthat other combinations of hardware and software are also within thescope of the present invention. The present invention may be implementedonly in hardware, or only in software, or using combinations thereof.

The specification and drawings are, accordingly, to be regarded in anillustrative rather than a restrictive sense. It will, however, beevident that additions, subtractions, deletions, and other modificationsand changes may be made thereunto without departing from the broaderspirit and scope of the invention as set forth in the claims.

1. A method for routing at least one interconnect of an integratedcircuit comprising: identifying at least two pins to couple; by using acomputer, calculating a route area having a boundary so that the atleast two pins touch the boundary, wherein the route area has arectangular shape and is bounded by a first, second, third, and fourthside, the third side is opposite of the first side, the fourth side isopposite of the second side, the first side is longer than the secondside, the first and third sides extend in a first direction, the secondand fourth sides extend in a second direction, and the second directionis orthogonal to the first direction; routing a spine interconnectextending in the first direction at least a length from a first pin to asecond pin in the first direction; and routing a plurality of stitchinginterconnects in the second direction to couple the first pin and secondpin to the spine interconnect.
 2. The method of claim 1 wherein theroute area in the second direction extends between the most oppositelydisposed in the second direction of the at least two pins.
 3. The methodof claim 1 further comprising determining a position in the seconddirection for the spine interconnect to reduce an average length of theplurality of stitching interconnects.
 4. The method of claim 3 whereinthe position of the spine interconnect in the second direction is aweighted average of positions in the second direction of the at leasttwo pins.
 5. The method of claim 1 further comprising: determining if atleast one forbidden area is located within the route area, the at leastone forbidden area extends in the first direction the entire length ofthe route area in the first direction and comprises at least oneobstacle, wherein routing the spine interconnect excludes the at leastone forbidden area.
 6. The method of claim 5 wherein the position of thespine interconnect in the second direction is a closest availableposition outside the at least one forbidden area to a weighted averageof positions in the second direction of the at least two pins positions.7. The method of claim 5 further comprising determining if a path ofeach of the plurality of stitching interconnects is unobstructed by theat least one obstacle.
 8. The method of claim 1 wherein an edge of theroute area being an edge of a chip, the edge of the chip includes one ofthe at least one pins.
 9. The method of claim 1 further comprisingautomatically routing at least one shield parallel to the spineinterconnect.
 10. The method of claim 9 wherein the at least one shieldcomprises two shields disposed on opposite sides of the spineinterconnect.
 11. The method of claim 9 wherein the at least one shieldis coupled to a ground potential.
 12. A method for routing a pluralityof nets of an integrated circuit comprising: identifying pins to couplefor each net; by using a computer, calculating a route area for each netto comprise positions in a first direction of the pins for such net,wherein a boundary of the route area comprises at least a first side anda second side, the first side is opposite of the second side, and eachof the pins touches the first or second side; determining for each routearea if at least one forbidden area is located within the route area;routing outside of the at least one forbidden area a plurality of spineinterconnects extending in a first direction the entire length of eachcorresponding route area in the first direction; and routing a pluralityof stitching interconnects in a second direction to couple each of thepins to the corresponding spine interconnect, wherein the at least oneforbidden area being an area to include at least one obstacle andextending in the first direction an entire length of the correspondingroute area in the first direction.
 13. The method of claim 12 furthercomprising automatically routing the plurality of spine interconnects tobe spaced to satisfy a design constraint.
 14. The method of claim 13wherein the design constraint comprises at least one of spacing,crosstalk, capacitance, or timing.
 15. The method of claim 12 furthercomprising automatically routing a first interconnect to match a timingdelay of a second interconnect by lengthening the first interconnect.16. The method of claim 12 further comprising automatically routing afirst interconnect to match a timing delay of a second interconnect byincreasing the spacing between the first interconnect and a thirdinterconnect.
 17. A method of routing at least one interconnect of anintegrated circuit comprising: by using a computer, identifying at leasttwo pins to couple, wherein each pin has a position in a first directionand a position in a second direction, orthogonal to the first direction;calculating a route area having a boundary, the route area extending adistance in the first direction to comprise positions in the firstdirection of the at least two pins, wherein the at least two pins are onthe boundary of the route area; determining if at least one forbiddenarea is located within the route area, wherein the at least oneforbidden area extends in the first direction the entire length of theroute area in the first direction and comprises at least one obstacle;routing a spine interconnect extending in the first direction at least alength from a first pin to a second pin in the first direction, whereinthe spine interconnect is placed outside of the at least one forbiddenarea; and routing a plurality of stitching interconnects in the seconddirection to couple the first pin and second pin to the spineinterconnect, wherein a position in the second direction of the spineinterconnect is at an available position, outside the at least oneforbidden area, based on a function of the at least two pins.
 18. Themethod of claim 17 wherein the function comprises a quotient of a sum ofpositions of the pins in the second direction and a total number of theat least two pins.
 19. The method of claim 17 wherein the functioncomprises a weighted average of positions in the second direction of theat least two pins.
 20. The method of claim 17 wherein the availableposition is at a position not occupied by another spine interconnect.21. The method of claim 1 wherein the at least two pins touch at leastthe first or third sides.
 22. The method of claim 1 wherein the routinga spine interconnect extending in the first direction at least a lengthfrom a first pin to a second pin in the first direction is replaced byrouting a spine interconnect extending in the first direction at least alength of the first side in the first direction.
 23. The method of claim1 wherein the route area comprises the spine interconnect and theplurality of stitching interconnects.
 24. The method of claim 12 whereinthe route area has a trapezoid shape.
 25. The method of claim 12 whereinthe route area has a rectangle shape.
 26. The method of claim 12 whereina length of the spine interconnects have a length at least equal to alength of the first side.
 27. The method of claim 12 wherein the routearea comprises the spine interconnect and the plurality of stitchinginterconnects.
 28. The method of claim 17 wherein the boundary of theroute area comprises a first in the first direction, second in thesecond direction, third in the first direction, and fourth side in thesecond direction, the third side is opposite of the first side, thefourth side is opposite of the second side, and the first side is longerthan the second side.
 29. The method of claim 28 wherein the at leasttwo pins are on at least the first side or the third side.
 30. Themethod of claim 28 wherein the entire length of the route area is equalto a length of the first side.
 31. The method of claim 17 wherein therouting a spine interconnect extending in the first direction at least alength from a first pin to a second pin in the first direction, whereinthe spine interconnect is placed outside of the at least one forbiddenarea is replaced by routing a spine interconnect extending in the firstdirection at least the entire length of the route area, wherein thespine interconnect is placed outside of the at least one forbidden area.32. The method of claim 17 wherein the route area comprises the spineinterconnect and stitching interconnects.